Skip to content

Conversation

@paul356
Copy link
Contributor

@paul356 paul356 commented Nov 27, 2025

Description

Since BLE supports multiple connections, it is not uncommon for a BLE HID host device to support multiple connections. This PR addresses the need to support multiple connections in the BLE HID layer.

  1. Add neccessary data structures to manage multiple connections in the HID layer of BLE protocol.
  2. Add interfaces to allow users to select a connection out of multiple connections or boradcast to all connections.
  3. This change keep the single connection behavior the same.

Related

Testing

Tests done so far:

  1. I have tested this change using the esp_hid_device example. For single connection the behavior stays the same.
  2. I have a keyboard project which supports multiple BLE clients. I am able to switch between different BLE clients and enable broadcast mode.

Checklist

Before submitting a Pull Request, please ensure the following:

  • 🚨 This PR does not introduce breaking changes.
  • All CI checks (GH Actions) pass.
  • Documentation is updated as needed.
  • Tests are updated or added as necessary.
  • Code is well-commented, especially in complex areas.
  • Git history is clean — commits are squashed to the minimum necessary.

Note

Adds BLE HID multi-connection support with APIs to select an active connection or broadcast to all, and updates report sending and event handling accordingly.

  • API (public components/esp_hid/include/esp_hidd.h):
    • Add esp_hidd_conn_info_t.
    • New multi-connection APIs: esp_hidd_dev_set_active_conn, esp_hidd_dev_get_connections, esp_hidd_dev_set_broadcast_mode, esp_hidd_dev_get_active_conn, esp_hidd_dev_is_broadcast_mode.
  • BLE HID implementation (components/esp_hid/src/ble_hidd.c, private/ble_hidd.h):
    • Introduce connection table with mutex, active-connection index, and broadcast mode; helper functions to add/remove/query connections.
    • Update GATT event handling to manage multiple connections and per-connection Battery CCC.
    • Modify connected, battery, INPUT, and FEATURE report paths to send to active connection (unicast) or all (broadcast), with proper synchronization and callbacks.
    • Expose BLE-specific multi-connection functions for use by the public wrapper.
  • Wrapper (components/esp_hid/src/esp_hidd.c):
    • Route new multi-connection APIs to BLE transport (return ESP_ERR_NOT_SUPPORTED for others).
  • CI:
    • Update header check exception lists related to public headers.

Written by Cursor Bugbot for commit 94e721c. This will update automatically on new commits. Configure here.

@github-actions
Copy link

github-actions bot commented Nov 27, 2025

Messages
📖 🎉 Good Job! All checks are passing!

👋 Hello paul356, we appreciate your contribution to this project!


📘 Please review the project's Contributions Guide for key guidelines on code, documentation, testing, and more.

🖊️ Please also make sure you have read and signed the Contributor License Agreement for this project.

Click to see more instructions ...


This automated output is generated by the PR linter DangerJS, which checks if your Pull Request meets the project's requirements and helps you fix potential issues.

DangerJS is triggered with each push event to a Pull Request and modify the contents of this comment.

Please consider the following:
- Danger mainly focuses on the PR structure and formatting and can't understand the meaning behind your code or changes.
- Danger is not a substitute for human code reviews; it's still important to request a code review from your colleagues.
- To manually retry these Danger checks, please navigate to the Actions tab and re-run last Danger workflow.

Review and merge process you can expect ...


We do welcome contributions in the form of bug reports, feature requests and pull requests via this public GitHub repository.

This GitHub project is public mirror of our internal git repository

1. An internal issue has been created for the PR, we assign it to the relevant engineer.
2. They review the PR and either approve it or ask you for changes or clarifications.
3. Once the GitHub PR is approved, we synchronize it into our internal git repository.
4. In the internal git repository we do the final review, collect approvals from core owners and make sure all the automated tests are passing.
- At this point we may do some adjustments to the proposed change, or extend it by adding tests or documentation.
5. If the change is approved and passes the tests it is merged into the default branch.
5. On next sync from the internal git repository merged change will appear in this public GitHub repository.

Generated by 🚫 dangerJS against 94e721c

@github-actions github-actions bot changed the title feat(esp_hid): Enahcne esp_hid to support multiple BLE connections feat(esp_hid): Enahcne esp_hid to support multiple BLE connections (IDFGH-16867) Nov 27, 2025
@espressif-bot espressif-bot added the Status: Opened Issue is new label Nov 27, 2025
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the final PR Bugbot will review for you during this billing cycle

Your free Bugbot reviews will reset on December 20

Details

Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

1. Add neccessary data structures to manage multiple connections in the
   HID layer of BLE protocol.
2. Add interfaces to allow users to select a connection out of multiple
   connections or boradcast to all connections.
3. This change keep the single connection behavior the same.
@paul356 paul356 force-pushed the hid-multiple-conn-support branch from a3ffc03 to 94e721c Compare November 27, 2025 03:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Status: Opened Issue is new

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants